跳到主要内容

2.3.7 FSM(有限状态机):独热编码逻辑方程

给定一个具有3个输入、3个输出和10个状态的状态机:

alt text

假设使用以下一位热编码:(S, S1, S11, S110, B0, B1, B2, B3, Count, Wait) = (10'b0000000001, 10'b0000000010, 10'b0000000100, ..., 10'b1000000000),通过观察推导出次态逻辑方程和输出逻辑方程。

假设采用一位热编码,通过观察推导状态转移和输出逻辑方程。仅实现此状态机的次态转移逻辑和输出逻辑(组合逻辑部分)。(测试台将使用非一位热编码的输入进行测试,以确保你没有尝试更复杂的操作。参见2.2.5第6小结fsm3onehot了解针对一位热编码状态机通过“观察”推导逻辑方程的具体含义。)

编写代码生成以下方程:

  • B3_next —— 状态B3的次态逻辑
  • S_next
  • S1_next
  • S11_next
  • Count_next
  • Wait_next
  • done —— 输出逻辑
  • counting
  • shift_ena

模块声明

module top_module(
input d,
input done_counting,
input ack,
input [9:0] state, // 10-bit one-hot current state
output B3_next,
output S_next,
output S1_next,
output Count_next,
output Wait_next,
output done,
output counting,
output shift_ena
);

做题区